﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic.Interfaces;
using Crosland.Automotriz.Logic.Linq;
using System.Configuration;
using Crosland.Automotriz.Core;
using System.Data;
using System.IO;
using Crosland.Automotriz.Seguridad.ControlExeption;
namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmVentaGestionRegistro : System.Web.UI.Page
    {
        static DataTable ds = new DataTable();
        private static String RutaExcel = "";
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {

                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", "JavaScript:confirmSubmitResult();", true);
                CreaDataTable();
            
            
            }

            grdListGestion.DataSource = ds;
            grdListGestion.DataBind();
        }



        void CreaDataTable()
        {

            ds.Rows.Clear();

            ds.Columns.Clear();

            DataColumn nro_factura = new DataColumn();
            nro_factura.DataType = System.Type.GetType("System.String");
            nro_factura.ColumnName = "NRO_FACTURA";

            DataColumn fec_entrega_cmp = new DataColumn();
            fec_entrega_cmp.DataType = System.Type.GetType("System.String");
            fec_entrega_cmp.ColumnName = "FEC_ENTREGA_CMP";

            DataColumn fec_entrega_titulo = new DataColumn();
            fec_entrega_titulo.DataType = System.Type.GetType("System.String");
            fec_entrega_titulo.ColumnName = "FEC_ENTREGA_TITULO";


            DataColumn fec_entrega_poliza = new DataColumn();
            fec_entrega_poliza.DataType = System.Type.GetType("System.String");
            fec_entrega_poliza.ColumnName = "FEC_ENTREGA_POLIZA";


            DataColumn nif_representante = new DataColumn();
            nif_representante.DataType = System.Type.GetType("System.String");
            nif_representante.ColumnName = "NIF_REPRESENTANTE";



            DataColumn nom_representante = new DataColumn();
            nom_representante.DataType = System.Type.GetType("System.String");
            nom_representante.ColumnName = "NOM_REPRESENTANTE";


            DataColumn nro_partida = new DataColumn();
            nro_partida.DataType = System.Type.GetType("System.String");
            nro_partida.ColumnName = "NRO_PARTIDA";

            DataColumn nro_asiento = new DataColumn();
            nro_asiento.DataType = System.Type.GetType("System.String");
            nro_asiento.ColumnName = "NRO_ASIENTO";


            ds.Columns.Add(nro_factura);
            ds.Columns.Add(fec_entrega_cmp);
            ds.Columns.Add(fec_entrega_titulo);
            ds.Columns.Add(fec_entrega_poliza);
            ds.Columns.Add(nif_representante);
            ds.Columns.Add(nom_representante);
            ds.Columns.Add(nro_partida);
            ds.Columns.Add(nro_asiento);
       
            DataRow row = ds.NewRow();

            ds.Rows.Add(row);

            grdListGestion.DataSource = ds;


        }


        public void cargar_Grid(string filePath)
        {
            try
            {

                System.Data.OleDb.OleDbConnectionStringBuilder builder = new System.Data.OleDb.OleDbConnectionStringBuilder();
                builder.DataSource = filePath;

                if (Path.GetExtension(filePath).ToUpper() == ".XLS")
                {
                    builder.Provider = "Microsoft.ACE.OLEDB.12.0";
                    builder.Add("Extended Properties", "Excel 8.0;HRD=Yes;IMEX=1");
                }
                else if (Path.GetExtension(filePath).ToUpper() == ".XLSX")
                {
                    builder.Provider = "Microsoft.ACE.OLEDB.12.0";
                    builder.Add("Extended Properties", "Excel 12.0;HRD=Yes;IMEX=1");
                }






                System.Data.OleDb.OleDbConnection oledbConn = new System.Data.OleDb.OleDbConnection(builder.ConnectionString);

                string strSQL = "SELECT NRO_FACTURA,FEC_ENTREGA_CMP,FEC_ENTREGA_TITULO,FEC_ENTREGA_POLIZA,NIF_REPRESENTANTE,NOM_REPRESENTANTE,NRO_PARTIDA,NRO_ASIENTO FROM [Carga$]";

                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strSQL, oledbConn);

                System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
                da.Fill(ds);

                grdListGestion.DataSource = ds;
                grdListGestion.DataBind();
                grdListGestion.Visible = true;




            }
             catch (Crosland.Automotriz.Seguridad.ControlExeption.DataException e)
            {

                MensajesError(e.Message, e, "cargar_Grid");
                 
                lblmensaje.Text = string.Empty;
                 lblmensaje.Text = "Formato no es correcto ";
                string scriptExeption = "ShowMensaje();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptExeption, true);

                grdListGestion.Visible = false;
                grdListGestion.DataSource = null;
                grdListGestion.DataBind();
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "cargar_Grid");
            }

        }

        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (Exception e)
            {
                GuardarExceptionLog(e.Message, e, "GuardarExceptionLog");
                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }

        protected void uploadImportarExcel_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            try
            {
                if (e.IsValid)
                {


                    string filePath = Server.MapPath("~/Archivos Excel/" + e.UploadedFile.FileName);
                    e.UploadedFile.SaveAs(filePath);
                    RutaExcel = filePath;

                }
                else
                {
                    lblmensaje.Text = string.Empty;
                    lblmensaje.Text = "El formato no es el correcto! ";
                    string scriptOK = "ShowMensaje();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
                }
            }
            catch
            {

            }
        }

        protected void btnImportar_Click(object sender, EventArgs e)
        {
            ds.Clear();
            if (RutaExcel.Length == 0)
            {

                lblmensaje.Text = string.Empty;
                lblmensaje.Text = "Error: debe cargar excel";
                string scriptOK = "ShowMensaje();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);

                return;
            }
            else
            {
                cargar_Grid(RutaExcel);

                RutaExcel = "";

            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            if (grdListGestion.VisibleRowCount <= 1)
            {
                lblmensaje.Text = string.Empty;
                lblmensaje.Text = "Seleccione un archivo excel! ";
                string scriptOK = "ShowMensaje();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }
            else
            {

                this.grabar();
                lblmensaje.Text = string.Empty;
                lblmensaje.Text = "Se grabo correctamente.";
                string scriptOK = "ShowMensaje();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }
        }






        //int variable;
      int nro_factura;
      string FEC_ENTREGA_CMP;
      string FEC_ENTREGA_TITULO;
      string FEC_ENTREGA_POLIZA;
      string NIF_REPRESENTANTE;
      string NOM_REPRESENTANTE;
      string NRO_PARTIDA;
      string NRO_ASIENTO;
        void grabar()
        {

            int i = 0;
            clsT_Ven_Gestion_RegistroLogic clst_ven_gestion_registro = new clsT_Ven_Gestion_RegistroLogic();

            

            while (i < grdListGestion.VisibleRowCount)
            {
               
                try
                {
                    nro_factura = Convert.ToInt32(grdListGestion.GetRowValues(i, "NRO_FACTURA"));
                    if (Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_CMP")).ToString() != string.Empty)
                    {
                        FEC_ENTREGA_CMP = Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_CMP"));
                    }
                    else {
                        FEC_ENTREGA_CMP = null;
                    }
                    
                    if (Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_TITULO")).ToString() != string.Empty)
                    {
                        FEC_ENTREGA_TITULO = Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_TITULO"));
                    }
                    else
                    {
                        FEC_ENTREGA_TITULO = null;
                    }
                  
                    if (Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_POLIZA")).ToString() != string.Empty)
                    {
                        FEC_ENTREGA_POLIZA = Convert.ToString(grdListGestion.GetRowValues(i, "FEC_ENTREGA_POLIZA"));
                    }
                    else
                    {
                        FEC_ENTREGA_POLIZA = null;
                    }
                    
                    NIF_REPRESENTANTE = Convert.ToString(grdListGestion.GetRowValues(i, "NIF_REPRESENTANTE"));
                    NOM_REPRESENTANTE = Convert.ToString(grdListGestion.GetRowValues(i, "NOM_REPRESENTANTE"));
                    NRO_PARTIDA = Convert.ToString(grdListGestion.GetRowValues(i, "NRO_PARTIDA"));
                    NRO_ASIENTO = Convert.ToString(grdListGestion.GetRowValues(i, "NRO_ASIENTO"));
          

                    try
                    {
                        int listado = clst_ven_gestion_registro.BuscarExistentes(nro_factura);


                        if (listado == 1)
                        {

                           
                         

                            clst_ven_gestion_registro.Modificar(nro_factura, FEC_ENTREGA_CMP, FEC_ENTREGA_TITULO, FEC_ENTREGA_POLIZA, NIF_REPRESENTANTE, NOM_REPRESENTANTE, NRO_PARTIDA, NRO_ASIENTO);


                        }
                        else
                        {

                            clst_ven_gestion_registro.insertar(nro_factura, FEC_ENTREGA_CMP, FEC_ENTREGA_TITULO, FEC_ENTREGA_POLIZA, NIF_REPRESENTANTE, NOM_REPRESENTANTE, NRO_PARTIDA, NRO_ASIENTO);

                        }
                    }
                    catch
                    {
                        lblmensaje.Text = string.Empty;
                        lblmensaje.Text = Globales.msjSql;
                        string scriptOK = "ShowMensaje();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
                    }





                   

                }
                catch { break; }

                i = i + 1;


            }
        }

        protected void grdListGestion_PageIndexChanged(object sender, EventArgs e)
        {
            grdListGestion.DataSource = ds;
            grdListGestion.DataBind();
        }

        protected void btnFormato_Click(object sender, EventArgs e)
        {
            try
            {
                string filepath = Server.MapPath("\\Archivos Excel\\Formato\\Ven_Gestion_carga.XLSX");

                string filename = "Ven_Gestion_carga.XLSX";
                Response.Clear();

                Response.ContentType = "application/vnd.ms-excel";

                Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

                Response.Flush();

                Response.WriteFile(filepath);

                Response.End();
            }
            catch 
            {
            }
        }

        protected void bntSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmDefault.aspx?id="+ idNegocio);
        }







    }
}